erDiagram
GAME {
int appID PK
string title
string description
date release_date
string store_page_link
int game_tag_id FK
}
TAG {
string name PK
string tag_page_link
int game_tag_id FK "multi-valued"
}
GENRE {
string name PK
}
GAME_TAG {
int game_tag_id PK
int game_id FK
int tag_name FK
}
USER {
int user_id PK
string name
}
LIBRARY {
int user_id FK
string appID FK "multi-valued"
}
GAME_TAG }o--|{ TAG : has
GAME ||--|| GAME_TAG : has
GENRE }o..o{ TAG : related-somehow
USER ||..|| LIBRARY : owns
LIBRARY }o..o{ GAME : contains
Deliverable 4 - Video Pitch
CMSC408 - Spring 2025 - Team Open Valve
Video pitch
Link to source video in case the iframe player does not work.
Crow’s Foot ER Diagram
Problem Domain
Open Valve is a database of steam apps and their associated game data. The focus of the database is on the user-applied tags to steam games.
Need
The goal of our project is to utilize this data to create a curated recommendation system for users based on their game tags and relevant data.
The current recommendation system that Steam boasts is frankly lackluster. Despite being one of the largest game storefronts with millions of users and an untold number of games, the discovery system just does not cut it. We aim to create a database and front-end to address this issue.
Context, Scope, Perspective
We are approaching this as from the perspective of Steam users that want to spend more of our hard-earned money on video games. We do not want to extend our reach beyond what is reasonable for a semester-long project. To this end, we are expecting to only create a basic front-end that is focused on the features, rather than presentability. Additionally, we are first attempting to implement just one recommendation algorithm, and we will see from there what might be necessary to bring this project to fruition.
ProtonDB is a notable example of a similar service. On the linked page, if you change the “Category” to “Personal Library”, there is an option to link your Steam account. Using your profile, the website will process your library. ProtonDB uses this information to tell you what games you own that are compatible with Valve’s Windows compatability layer called Proton (which itself is based off of Wine). We hope to create a similar user experience with our project.
Motivation
As stated, we believe the discoverability of games on the Steam storefront is lacking, and we want to make a difference!
README
Open Valve - Steam Game Recommendation System
Project Overview
This repository contains the deliverables for the Database Design Project. The objective of this project is to create a database and front-end that provides Steam game recommendations based on the user’s current library. Using user-generated tags, the system identifies and suggests similar games. The final report provides an in-depth analysis of the database design, while the accompanying video presentations offer further context regarding the design process and key considerations.
Deliverables
- Deliverable 4: Project Pitch Video and Report
- Deliverable 5: Design Document
- Deliverable 7: Complete Software Product
Relevant Folders
./reports- Holds the Quarto source files of the reports./docs- Holds the rendered html files of the reports
How to Render
You must have Quarto installed. Inside the ./reports directory, run the command quarto render.
Then, open ./docs/index.html to view the index page that links to all of the reports contained in this repository.
Project Description
Problem Domain: This project focuses on enhancing the gaming experience by providing intelligent game recommendations based on a user’s Steam library. By leveraging user-generated tags, the system determines game similarities to suggest new titles of interest.
Justification for a Database: Given the extensive nature of Steam’s game library and the variety of user preferences, a structured database is necessary to efficiently store and analyze game data, user libraries, and recommendation mappings.
Queries and Sample Data
The database is designed to support 20 distinct queries, illustrating its ability to fulfill a variety of user requirements. Sample data has been provided to demonstrate the expected structure and content of the database tables.
Project Timeline
A Gantt Chart has been developed to outline the key tasks and milestones necessary for completing the final deliverable by April 29th.
Reflection
- What did you like the most about this project?
- Making a video was an interesting departure from the usual faire of writing textual reports. It allowed us to be creative and present our ideas in a much more fluid manner than otherwise possible in a text document.
- How are you finding Harmonize to host/facilitate discussions? Is it helpful?
- Harmonize is difficult for discussing the class topics. It is not because of Harmonize itself, but rather the excessive reliance on ChatGPT answers. Instead of conducting a dialogue it seems that everyone would rather just meet their post/response quota and be done. Harmonize itself is cleaner and far better structured than Canvas discussions though.
- How would you improve Harmonize so that it works better for discussions?
- Discourage AI responses. While AI is clearly an invaluable tool and our futures as computer scientists will rely on it; it kills the human element of discussion and dialogue that gives the platform any value in the first place.